#pragma once

#include <string>
#include "Texture.h"
#include "color.h"
#include "Resolution.h"
#include "InvalidResolutionException.h"
#include <map>

using namespace std;

class General {

private:
	int resolutionCode;

	Color * elementBackgroundColor;
	Color * lineColor;
	Color * stageBackgroundColor;
	Texture *elementTexture;
	Texture *stageTexture;
	map<int, Resolution * > * resolutions;
	static General* instance;
	int framesPerSecond;

private: 
	General(void);

public: 
	float score;
	int vidas;
	static General* getInstance();

	/*-------------Getters & Setters-------------------*/	
	int getResolutionCode();
	void setResolutionCode(int val);
	Resolution * getResolution();
	Color * getElementBackgroundColor();
	void setElementBackgroundColor(Color * val);
	Color * getLineColor();
	void setLineColor(Color * val);
	Color * getStageBackgroundColor();
	void setStageBackgroundColor(Color * val);
	Texture * getElementTexture();
	void setElementTexture(Texture * val);
	Texture * getStageTexture();
	void setStageTexture(Texture * val);
	void setFramesPerSecond(int fps);
	int getFramesPerSecond();

public:
	~General(void);
};
